home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
FishMarket 1.0
/
FishMarket v1.0.iso
/
fishies
/
476-500
/
disk_500
/
wiconify
/
wutilities.lzh
/
wOpenOn
/
wOpenOn.c
< prev
next >
Wrap
C/C++ Source or Header
|
1991-04-19
|
3KB
|
128 lines
/*
* WOPENON A companion utility to wIconify that allows you to
* specify where windows that are destined for the
* Workbench screen should be openned.
*
* Copyright 1990 by Davide P. Cervone, all rights reserved.
* You may use this code, provided this copyright notice is kept intact.
*/
#include <exec/types.h>
#include "wIcon.h"
#define USAGE\
"wOpenOn [ACTIVE_SCREEN | CURRENT_WB | REAL_WB] [[NO]RESIZE]"
static char *program = "wOpenOn";
static char *version = "v1.2";
static char *copyright =
"Copyright (C) 1990 by Davide P. Cervone, all rights reserved.";
#define ACTIVESCRN 1
#define CURRENTWB 2
#define REALWB 3
#define NOCHANGE 99
static int ScreenType = NOCHANGE;
static int Resize = NOCHANGE;
#define ARGMATCH(s) (stricmp(*argv,s) == 0)
/*
* Print()
*
* Find the standard AmigaDOS output file and write the output string
* to the output file. This is intended as a substitute for printf()
* when no formatting is required, and when you want a small executable.
*/
static void Print(s)
char *s;
{
ULONG OutFile;
extern ULONG Output();
OutFile = Output();
if (OutFile && s) Write(OutFile,s,strlen(s));
}
/*
* ParseArguments()
*
* While there are more arguments to view,
* Move to the next one
* If it matches something we're looking for, then set the proper variable.
* Otherwise, report an error.
* Return TRUE if all parameters were OK and at least one was given,
* and return FALSE otherwise.
*/
static int ParseArguments(argc,argv)
int argc;
char **argv;
{
int status = TRUE;
while (--argc)
{
argv++;
if (ARGMATCH("ACTIVE_SCREEN")) ScreenType = ACTIVESCRN; else
if (ARGMATCH("CURRENT_WB")) ScreenType = CURRENTWB; else
if (ARGMATCH("REAL_WB")) ScreenType = REALWB; else
if (ARGMATCH("RESIZE")) Resize = TRUE; else
if (ARGMATCH("NORESIZE")) Resize = FALSE;
else
{
Print("Unrecognized flag '");
Print(*argv);
Print("'\n");
status = FALSE;
}
}
if (ScreenType == NOCHANGE && Resize == NOCHANGE) status = FALSE;
return(status);
}
/*
* Error()
*
* Print the character string, and up to two optional strings, then
* go to a new output line, close Intuition, and exit with an error.
*/
static void Error(s,x1)
char *s,*x1;
{
Print(s);
if (x1) Print(x1);
Print("\n");
_exit(10L);
}
/*
* main()
*
* If all the arguments are OK,
* If wIconify is running, set the OpenOn menus appropriately,
* Otherwise give an error.
* Otherwise show the Usage message.
*/
void main(argc,argv)
int argc;
char **argv;
{
if (ParseArguments(argc,argv))
{
if (wIconifyActive()) wSetOpenOn(ScreenType,Resize);
else Error("wIconify not running or incompatible version",NULL);
} else Error("Usage: ",USAGE);
}